﻿#ifndef _yolo_console_dll_h__
#define _yolo_console_dll_h__

enum dn_mask_type_en
{
    dn_mt_box,
    dn_mt_mosaic,
    dn_mt_glass,
    dn_mt_box_label,
    dn_mt_box_blur
};


struct _darknet_main_weights_st
{
    std::string names_file;
    std::string weights;
    std::string cfg;
};

enum _darknet_watermark_flag
{
    _darknet_watermark_flag_no,
    _darknet_watermark_flag_add
};

struct _darknet_main_param
{
    _darknet_watermark_flag   m_watermark_flag = _darknet_watermark_flag_no;
    std::vector< _darknet_main_weights_st>  weight_list;
    int    show = 0;
    dn_mask_type_en    mask_type = dn_mt_box;
    std::string inifile;
    std::list<std::string> descInfos{ };
};


#ifdef OPENCV
#include <opencv2/opencv.hpp>            // C++
extern cv::RNG g_opencv_rng;

void draw_box_mosaic_cv_rgb(cv::Mat* pimg, int x1, int y1, int x2, int y2);
void draw_box_glass_cv_rgb(cv::Mat* pimg, int x1, int y1, int x2, int y2);
void draw_box_blur_cv_rgb(cv::Mat* pimg, int x1, int y1, int x2, int y2);

//水印处理
void dk_watermark_proc(_darknet_main_param& _param, cv::Mat& mat_img);
#endif



#endif  //_yolo_console_dll_h__